const Joi = require('joi');

// 分页参数验证
const validatePagination = (data) => {
  const schema = Joi.object({
    page: Joi.number().integer().min(1).default(1),
    pageSize: Joi.number().integer().min(1).max(100).default(20)
  });
  
  return schema.validate(data);
};

// 素材数据验证
const validateMaterial = (data) => {
  const schema = Joi.object({
    name: Joi.string().required().max(200),
    type_id: Joi.number().integer().allow(null),
    url: Joi.string().required().max(500),
    thumbnail: Joi.string().allow(null).max(500),
    width: Joi.number().integer().allow(null),
    height: Joi.number().integer().allow(null),
    file_size: Joi.number().integer().allow(null),
    file_type: Joi.string().allow(null).max(50),
    tags: Joi.array().items(Joi.string()).allow(null)
  });
  
  return schema.validate(data);
};

// 素材分类验证
const validateMaterialType = (data) => {
  const schema = Joi.object({
    name: Joi.string().required().max(100),
    description: Joi.string().allow(null),
    sort_order: Joi.number().integer().default(0)
  });
  
  return schema.validate(data);
};

// 模板数据验证
const validateTemplate = (data) => {
  const schema = Joi.object({
    name: Joi.string().required().max(200),
    type_id: Joi.number().integer().allow(null),
    preview: Joi.string().allow(null).max(500),
    thumbnail: Joi.string().allow(null).max(500),
    width: Joi.number().integer().allow(null),
    height: Joi.number().integer().allow(null),
    json_data: Joi.object().allow(null),
    tags: Joi.array().items(Joi.string()).allow(null),
    is_public: Joi.boolean().default(true)
  });
  
  return schema.validate(data);
};

// 字体样式验证
const validateFontStyle = (data) => {
  const schema = Joi.object({
    name: Joi.string().required().max(200),
    type_id: Joi.number().integer().allow(null),
    preview: Joi.string().allow(null).max(500),
    font_family: Joi.string().allow(null).max(100),
    font_size: Joi.number().allow(null),
    font_weight: Joi.string().allow(null).max(20),
    color: Joi.string().allow(null).max(20),
    style_data: Joi.object().allow(null)
  });
  
  return schema.validate(data);
};

module.exports = {
  validatePagination,
  validateMaterial,
  validateMaterialType,
  validateTemplate,
  validateFontStyle
};